package src.main.BehavioralPatterns.Iterator;

import java.util.NoSuchElementException;
import java.util.Stack;

// 古籍区迭代器，反向遍历
public class ReverseIterator implements Iterator<Book> {
    private final Stack<Book> stack; // 引用栈集合
    private int position; // 当前遍历位置

    public ReverseIterator(Stack<Book> stack) {
        // 创建栈的深拷贝，避免修改原始数据
        this.stack = (Stack<Book>) stack.clone();
        this.position = stack.size() - 1; // 从最后一个元素开始
    }

    // 检查是否有下一个元素，从后向前
    @Override
    public boolean hasNext() {
        return position >= 0;
    }

    // 获取下一个元素，从后向前
    @Override
    public Book next() {
        if (!hasNext()) {
            throw new IndexOutOfBoundsException("古籍区没有更多书籍");
        }
        return stack.get(position--); // 返回当前元素，然后移动指针
    }

    // 删除操作不支持（古籍不能删除）
    @Override
    public void remove() {
        throw new UnsupportedOperationException("古籍不可删除");
    }
}
